package com.enum_;

/**
 * @Author 小闽
 * @Date 2024/9/21 16:07
 * @PackageName: com.enum_
 * @ClassName: EnumMthod
 * @Description: 枚举的常用方法
 * @Version 1.0
 */
public class EnumMthod {
    public static void main(String[] args) {
        Season2 season2 = Season2.SPRING;
        // name就是返回当前枚举对象的名称（变量名）
        System.out.println(season2.name());
        // ordinal就是返回对象的索引下标位置是第几个，默认是从0开始的
        System.out.println(season2.ordinal());
        // 从反编译能够看出，values是返回一个数组，
        // 将枚举对象存入到数组当中进行返回。
        Season2[] values = Season2.values();
        // 使用增强型for循环就可以看出values数组中的枚举对象都被输出
        for(Season2 season : values){
            System.out.println(season);
        }
        //valueOf:将字符串转换成枚举对象，要求字符串必须为已有的常量名，否则报异常！
        // valueOf是从根据输入的字符串去枚举对象中去查找
        // 如果有就返回这个常量的对象，如果没有就会出现异常信息
        System.out.println("======将字符串转换成枚举对象======");
        Season2 winter = Season2.valueOf("WINTER");
        System.out.println(winter);
        // CompareTo: 比较两个枚举常量，比较的就是位置号。
        // compareTo是让两个常量的位置号去相减得到的一个差值。
        /*
        public final int compareTo(E o) {
            return self.ordinal - other.ordinal;
        }
         */
        System.out.println(Season2.SPRING.compareTo(Season2.SUMMER));
    }
}
